package tech.lingrui.mnpanonymousservice.service;

import tech.lingrui.mnpanonymousservice.model.bean.GameModel;
import tech.lingrui.mnpanonymousservice.model.bean.UserModel;

/**
 * 游戏服务接口
 *
 * @author lqs2
 * @date 2018/11/25, Sun
 */
public interface GameService {

    /**
     * 用户创建一句游戏
     *
     * @param model 创建用户
     * @return 游戏模型
     * @throws Exception 抛出所有异常
     **/
    GameModel createGame(UserModel model) throws Exception;


//    /**
//     * 用户创建一句游戏
//     *
//     * @param model 创建用户
//     * @return 游戏模型
//     * @throws Exception 抛出所有异常
//     **/
//    void cancelGame(UserModel model) throws Exception;


    /**
     * 用户加入一局游戏
     *
     * @param gameId      游戏id
     * @param participate 加入游戏的用户
     * @return 是否加入成功
     * @throws Exception 异常
     **/
    boolean joinGame(String gameId, UserModel participate) throws Exception;


    /**
     * 开始游戏
     *
     * @param gameId 游戏id
     * @throws Exception 异常
     **/
    void startGame(String gameId) throws Exception;

    /**
     * 用户随机匹配玩家
     *
     * @param model 用户
     */
    void randomMatch(UserModel model) throws Exception;

    void finishGame() throws Exception;


    /**
     * 根据游戏的id获取该局游戏的信息
     *
     * @param gameId 游戏id
     * @return 游戏模型
     * @throws Exception 抛出所有异常
     **/
    GameModel getGameInfo(String gameId) throws Exception;

    /**
     * 获取正在进行的游戏的当前回合数
     *
     * @param gameId 游戏id
     * @return 当前第几回合
     * @throws Exception 抛出所有异常
     */
    int getCurrGameModel(String gameId) throws Exception;

    /**
     *
     * 处理来自用户的答案消息
     */
    void handleAnswerFromUser(String gameId,int answer);
}
